package com.example.chamberlainserver.mapper;

import com.example.chamberlainserver.Entry.Counselor;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 辅导员数据访问层
 */
@Mapper
public interface CounselorMapper {
    
    /**
     * 查询所有辅导员
     */
    List<Counselor> selectAll();
    
    /**
     * 根据ID查询辅导员
     */
    Counselor selectById(@Param("id") Integer id);
    
    /**
     * 根据工号查询辅导员
     */
    Counselor selectByEmployeeId(@Param("employeeId") String employeeId);
    
    /**
     * 分页查询辅导员
     */
    List<Counselor> selectByPage(@Param("offset") Integer offset, 
                                @Param("limit") Integer limit,
                                @Param("name") String name,
                                @Param("department") String department,
                                @Param("status") String status);
    
    /**
     * 查询辅导员总数
     */
    Integer countAll(@Param("name") String name,
                    @Param("department") String department,
                    @Param("status") String status);
    
    /**
     * 插入辅导员
     */
    Integer insert(Counselor counselor);
    
    /**
     * 更新辅导员
     */
    Integer update(Counselor counselor);
    
    /**
     * 删除辅导员
     */
    Integer deleteById(@Param("id") Integer id);
    
    /**
     * 批量删除辅导员
     */
    Integer deleteByIds(@Param("ids") List<Integer> ids);
    
    /**
     * 根据班级ID查询辅导员列表
     */
    List<Counselor> selectByClassId(@Param("classId") Integer classId);
    
    /**
     * 查询未分配班级的辅导员
     */
    List<Counselor> selectUnassigned();
}